package com.poi.tl.sample.quickstart.app.tags;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.Numberings;
import com.poi.tl.sample.quickstart.consts.AppConsts;
import java.io.FileOutputStream;
import java.util.HashMap;
import org.springframework.core.io.ClassPathResource;

public class _5ListExport {

  public static void main(String[] args) throws Exception {
    ClassPathResource templateFile = new ClassPathResource(AppConsts.TAG_TEMPLATE_CLASS_PATH + "_5list_template.docx");
    String outFile = AppConsts.EXPORT_PATH + "_5list_template_output.docx";

    // 1 	compile 编译模板
    XWPFTemplate template = XWPFTemplate.compile(templateFile.getInputStream()).render(
        // 2 render 渲染数据
        new HashMap<String, Object>(){{
          // NumberingRenderData 可以创建多级列表，但是推荐使用区块对：区块对的循环功能可以很好的循环列表，并且保持有序列表编号有序。
          put("list", Numberings.create(
              "Plug-in grammar",
              "Supports word text, pictures, table...",
              "Not just templates"));

          /**
           * 编号样式支持罗马字符、有序无序等，可以通过 Numberings.of(NumberingFormat) 来指定：
           * DECIMAL //1. 2. 3.
           * DECIMAL_PARENTHESES //1) 2) 3)
           * BULLET //● ● ●
           * LOWER_LETTER //a. b. c.
           * LOWER_ROMAN //i ⅱ ⅲ
           * UPPER_LETTER //A. B. C.
           */
        }});
    // 3 write 输出到流
    template.writeAndClose(new FileOutputStream(outFile));
  }

}
